package com.example.excel_db.service;

import com.example.excel_db.dto.ExcelImportTaskDTO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * Excel导入导出服务接口
 */
public interface ExcelImportExportService {

    /**
     * 导入Excel数据
     *
     * @param templateId 模板ID
     * @param file Excel文件
     * @return 导入任务DTO
     */
    ExcelImportTaskDTO importExcel(Long templateId, MultipartFile file);

    /**
     * 导出Excel数据
     *
     * @param templateId 模板ID
     * @param dataList 数据列表
     * @return Excel文件字节数组
     */
    byte[] exportExcel(Long templateId, List<Map<String, Object>> dataList);

    /**
     * 获取导入任务状态
     *
     * @param taskId 任务ID
     * @return 任务DTO
     */
    ExcelImportTaskDTO getImportTaskStatus(Long taskId);

    /**
     * 取消导入任务
     *
     * @param taskId 任务ID
     * @return 是否成功取消
     */
    boolean cancelImportTask(Long taskId);

    /**
     * 重试失败的导入任务
     *
     * @param taskId 任务ID
     * @return 新的任务DTO
     */
    ExcelImportTaskDTO retryImportTask(Long taskId);
}